import 'package:interview/components/app/app_confirm_dialog.dart';
import 'package:interview/theme/app_colors.dart';
import 'package:permission_handler/permission_handler.dart';
import 'package:device_info_plus/device_info_plus.dart';
import 'dart:io'; // 检测平台
import 'package:flutter/material.dart';

class PermissionManager {
  /// 检查和请求一组权限
  static Future<bool> requestPermissions(List<Permission> permissions) async {
    bool allGranted = true;
    for (Permission permission in permissions) {
      PermissionStatus status = await permission.status;

      if (status.isGranted) {
        continue; // 权限已授予
      } else if (status.isDenied) {
        // 请求权限
        status = await permission.request();
        if (!status.isGranted) {
          allGranted = false; // 如果用户拒绝，标记未成功
        }
      } else if (status.isPermanentlyDenied) {
        // 永久拒绝
        allGranted = false;
        break; // 不必继续检查
      }
    }
    return allGranted;
  }


  /// 引导用户到设置页面
  static Future<void> openSettings(BuildContext context, Widget message , AppColors theme) async {
    bool ? confirmed =  await AppConfirmDialog.show(
      context: context,
      theme: theme,
      content: message, 
      confirmText: "前往设置" , 
      cancelText: "关闭",
      showCloseIcon: false,
      title: "开通权限"
    );
    if (confirmed != null) {
      if (confirmed) {
        // 执行删除操作
        openAppSettings(); // 打开设置页面
      } 
    }
  }



  /// 动态处理 Android 高版本的权限需求  仅用于安卓系统 存储照片和拍照权限
  static Future<bool> requestGalleryPermissions() async {
    if (Platform.isAndroid) {
      final androidVersion = await _getAndroidVersion();
      if (androidVersion >= 33) {
        // Android 13+ (API 33+)
        return await requestPermissions([ Permission.mediaLibrary,  Permission.photos]);
      } else if (androidVersion >= 30) {
        // Android 11+ (API 30+)
        return await requestPermissions([Permission.storage]);
      } else {
        // Android 10 及以下
        return await requestPermissions([Permission.storage]);
      }
    } else if (Platform.isIOS) {
      // iOS 平台权限处理
      return await requestPermissions([Permission.photos]);
    }
    return false; // 未知平台
  }

  
  /// 获取 Android 系统版本
  static Future<int> _getAndroidVersion() async {
    final deviceInfo = DeviceInfoPlugin(); // 创建 DeviceInfoPlugin 实例
    final androidInfo = await deviceInfo.androidInfo; // 获取 Android 设备信息
    return androidInfo.version.sdkInt; // 返回 SDK 版本号
  }
}
